using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Package
{
    /// <summary>
    /// <para>Create Vector Tile Index</para>
    /// <para>Creates a multiscale mesh of polygons that can be used as index polygons when creating vector tile packages.</para>
    /// <para>创建多比例多边形网格，该网格可在创建矢量切片包时用作索引面。</para>
    /// </summary>    
    [DisplayName("Create Vector Tile Index")]
    public class CreateVectorTileIndex : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateVectorTileIndex()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_map">
        /// <para>Input Map</para>
        /// <para>The input map with the feature distribution and vertex density that dictate the size and arrangement of output polygons. The input map is typically one that you will subsequently use to create vector tiles using the Create Vector Tile Package tool.</para>
        /// <para>具有要素分布和顶点密度的输入地图，用于决定输出面的大小和排列。输入地图通常是随后将用于使用创建矢量切片包工具创建矢量切片的地图。</para>
        /// </param>
        /// <param name="_out_featureclass">
        /// <para>Output Tile Feature Class</para>
        /// <para>The output polygon feature class of indexed tiles at each level of detail. Each tile encloses a manageable number of input vertices not exceeding the number specified by the Maximum Vertex Count parameter.</para>
        /// <para>每个细节级别的索引切片的输出面要素类。每个切片都包含一个可管理的输入顶点数，不超过最大顶点计数参数指定的数量。</para>
        /// </param>
        /// <param name="_service_type">
        /// <para>Package for ArcGIS Online | Bing Maps | Google Maps</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the tiling scheme will be generated from an existing map service or for ArcGIS Online, Bing Maps, and Google Maps.
        ///   <bulletList>
        ///     <bullet_item>Checked—The ArcGIS Online/Bing Maps/Google Maps tiling scheme will be used. The ArcGIS Online/Bing Maps/Google Maps tiling scheme allows you to overlay your cache tiles with tiles from these online mapping services. ArcGIS Pro includes this tiling scheme as a built-in option when loading a tiling scheme. When you check this parameter, the data frame of your source map must use the WGS 1984 Web Mercator (Auxiliary Sphere) projected coordinate system. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The tiling scheme from an existing vector tile service will be used. Only tiling schemes with scales that double in progression through levels and have 512-by-512 tile size are supported. You must specify a vector tile service or tiling scheme file in the Tiling scheme parameter.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定切片方案是从现有地图服务生成，还是为 ArcGIS Online、Bing 地图和 Google 地图生成切片方案。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将使用 ArcGIS Online/Bing 地图/Google 地图切片方案。ArcGIS Online/Bing 地图/Google 地图切片方案允许您使用这些在线制图服务中的切片叠加缓存切片。加载切片方案时，ArcGIS Pro 会将此切片方案作为内置选项包括在内。选中此参数时，源地图的数据框必须使用 WGS 1984 Web 墨卡托（辅助球体）投影坐标系。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中—将使用现有矢量切片服务中的切片方案。仅支持比例在关卡中翻倍且切片大小为 512 x 512 的切片方案。必须在切片方案参数中指定矢量切片服务或切片方案文件。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public CreateVectorTileIndex(object _in_map, object _out_featureclass, _service_type_value _service_type)
        {
            this._in_map = _in_map;
            this._out_featureclass = _out_featureclass;
            this._service_type = _service_type;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Vector Tile Index";

        public override string CallName => "management.CreateVectorTileIndex";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_map, _out_featureclass, _service_type.GetGPValue(), _tiling_scheme, _vertex_count];

        /// <summary>
        /// <para>Input Map</para>
        /// <para>The input map with the feature distribution and vertex density that dictate the size and arrangement of output polygons. The input map is typically one that you will subsequently use to create vector tiles using the Create Vector Tile Package tool.</para>
        /// <para>具有要素分布和顶点密度的输入地图，用于决定输出面的大小和排列。输入地图通常是随后将用于使用创建矢量切片包工具创建矢量切片的地图。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Map")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_map { get; set; }


        /// <summary>
        /// <para>Output Tile Feature Class</para>
        /// <para>The output polygon feature class of indexed tiles at each level of detail. Each tile encloses a manageable number of input vertices not exceeding the number specified by the Maximum Vertex Count parameter.</para>
        /// <para>每个细节级别的索引切片的输出面要素类。每个切片都包含一个可管理的输入顶点数，不超过最大顶点计数参数指定的数量。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Tile Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_featureclass { get; set; }


        /// <summary>
        /// <para>Package for ArcGIS Online | Bing Maps | Google Maps</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the tiling scheme will be generated from an existing map service or for ArcGIS Online, Bing Maps, and Google Maps.
        ///   <bulletList>
        ///     <bullet_item>Checked—The ArcGIS Online/Bing Maps/Google Maps tiling scheme will be used. The ArcGIS Online/Bing Maps/Google Maps tiling scheme allows you to overlay your cache tiles with tiles from these online mapping services. ArcGIS Pro includes this tiling scheme as a built-in option when loading a tiling scheme. When you check this parameter, the data frame of your source map must use the WGS 1984 Web Mercator (Auxiliary Sphere) projected coordinate system. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The tiling scheme from an existing vector tile service will be used. Only tiling schemes with scales that double in progression through levels and have 512-by-512 tile size are supported. You must specify a vector tile service or tiling scheme file in the Tiling scheme parameter.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定切片方案是从现有地图服务生成，还是为 ArcGIS Online、Bing 地图和 Google 地图生成切片方案。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将使用 ArcGIS Online/Bing 地图/Google 地图切片方案。ArcGIS Online/Bing 地图/Google 地图切片方案允许您使用这些在线制图服务中的切片叠加缓存切片。加载切片方案时，ArcGIS Pro 会将此切片方案作为内置选项包括在内。选中此参数时，源地图的数据框必须使用 WGS 1984 Web 墨卡托（辅助球体）投影坐标系。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中—将使用现有矢量切片服务中的切片方案。仅支持比例在关卡中翻倍且切片大小为 512 x 512 的切片方案。必须在切片方案参数中指定矢量切片服务或切片方案文件。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Package for ArcGIS Online | Bing Maps | Google Maps")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _service_type_value _service_type { get; set; }

        public enum _service_type_value
        {
            /// <summary>
            /// <para>ONLINE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ONLINE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXISTING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXISTING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Tiling scheme</para>
        /// <para>The vector tile service or tiling scheme file to be used if the Package for ArcGIS Online | Bing Maps | Google Maps parameter is not checked. The tiling scheme tile size must be 512 by 512 and must have consecutive scales in a ratio of two.</para>
        /// <para>如果 Package for ArcGIS Online |必应地图 |未选中 Google 地图参数。切片方案切片大小必须为 512 x 512，并且必须具有以 2 的比例连续的比例。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tiling scheme")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tiling_scheme { get; set; } = null;


        /// <summary>
        /// <para>Maximum Vertex Count</para>
        /// <para>The ideal number of vertices from all visible layers to be enclosed by each polygon in the output feature class. The default value is the recommended count of 10,000 vertices.</para>
        /// <para>输出要素类中每个面将包含的所有可见图层的理想折点数。默认值为建议的 10,000 个顶点计数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Vertex Count")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _vertex_count { get; set; } = 10000;


        public CreateVectorTileIndex SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}